/*******************************************************************************
* 版权：北京润尼尔网络科技有限公司，保留所有版权<br>
* 版本：v1.0.0<br>
* 文件：AppViewComponent.js<br>
* 日期：2017年9月29日<br>
* 作者: 杨顺强<br>
* 功能：应用程序组件对象基类，定义组件对象基本接口<br>
* 
* 修改记录：<br>
* 日期 描述 更新功能<br>
******************************************************************************/
 
window.makeNamespace(window,"Rainier.UI.V2");

Rainier.UI.V2.AppMenuComponent = Rainier.UI.V2.AppViewComponent.extend({

 	NAME : "Rainier.UI.V2.AppMenuComponent",

 	/**
	 * 函数名称：init<br>
	 * 函数功能：构造函数<br>
	 * 参数信息：app : 应用程序对象，
	 * 异常信息：无<br>
	 */
 	init : function(app,parentContainer){
        this._super(app,parentContainer);
 		this.container = $('<div id="app-content-menu"></div>');
 	},

 	/**
	 * 函数名称：createView<br>
	 * 函数功能：根据参数信息： 是否存在容器元素，进行不同形式的布局设置<br>
	 * 参数输入：$container : 当前组件容器元素<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
 	createView : function(){
		if(this.parentContainer){
            this.container.appendTo(this.parentContainer);
        }else{
            this.container.appendTo($("body"));
        }
		var $ulDom = $('<ul></ul>');
		this.container.append($ulDom);
		this.saveDom = this.createViewDom($ulDom,"保存","save");
		this.saveAsDom = this.createViewDom($ulDom,"另存为","saveAs");
		this.openDom = this.createViewDom($ulDom,"打开","open");
		this.deleteDom = this.createViewDom($ulDom,"删除","delete");
		this.undoDom = this.createViewDom($ulDom,"撤销","undo");
		this.redoDom = this.createViewDom($ulDom,"恢复","redo");
		this.full_screen_Dom = this.createViewDom($ulDom,"全屏","full_screen");
		
		$ulDom.append(this.saveDom);
		$ulDom.append(this.saveAsDom);
		$ulDom.append(this.openDom);
		$ulDom.append(this.deleteDom);
		$ulDom.append(this.undoDom);
		$ulDom.append(this.redoDom);
		$ulDom.append(this.full_screen_Dom);
		
		var context = this.context;
		this.bindCallBackFn(context);
 	},

 	/**
	 * 函数名称：createViewDom<br>
	 * 函数功能：创建当前组件的dom元素<br>
	 * 参数输入：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
 	createViewDom : function($ul,$title,$id){
 	    var $liDom = $("<li id='"+$id+"' title = '"+$title+"'><a></a></li>");
 	    return $liDom;
 	},

 	/**
	 * 函数名称：createView<br>
	 * 函数功能：对组件中的控制元素，进行事件绑定，此处，调用context内部的功能函数<br>
	 * 参数输入：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
 	bindCallBackFn : function(context){
 		$("#app-content-menu li").click(function(){
            var attrId = $(this).attr("id");
            switch(attrId)
            {
                case "save":
                    context.commandToSave();
                    break;
                case "saveAs":
                    context.commandToSaveAs();;
                    break;
                case "open":
                    context.commandToOpen();
                    break;
                case "delete":
                    context.commandToDelete();
                    break;
                case "undo":
                    context.commandToUndo();
                    break;
                case "redo":
                    context.commandToRedo();
                    break;
                case "full_screen":
                    context.commandToFullScreen();
                    break;    
            }
        })
 	},

 	/**
	 * 函数名称：enableComponent<br>
	 * 函数功能：启用组件内部功能<br>
	 * 参数输入：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
 	enableComponent : function(){
 		throw new Error("此函数有子类实现,当前对象可理解为抽象类，不向外提供实例，谢谢配合");
 	},

 	/**
	 * 函数名称：disableComponent<br>
	 * 函数功能：禁用组件功能<br>
	 * 参数输入：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
 	disableComponent : function(){
 		throw new Error("此函数有子类实现,当前对象可理解为抽象类，不向外提供实例，谢谢配合");
 	},
});